#实现一个自动取款机的存取款模拟，MySQL存储用户信息

from db.model import Model

def login_print():#打印用户登陆界面
    print("{:=^40}".format('账户已登录,您可以进行以下操作'))
    print("{:^3}{:^10}{:^3}{:^10}".format("1:", "查询", "2:", "存款"))
    print("{:^3}{:^10}{:^3}{:^10}".format("3:", "取款", "4:", "退出系统"))
    print('=' * 50)
#账户登陆函数，返回用户选择的数字
def login():  # 账户登陆函数，用来管理账户登陆的操作，判断账户，密码是否正确
    i = 0 #记录登陆错误次数。大于3次禁止登陆
    while True:

        
        print("{:=^40}".format('银行用户登录界面'))
        accid = input("请输入账号：")
        passW = int(input("请输入密码："))
        print('=' * 40)

        dlist = m.select(where=["accNum = %s"%(accid)])
        
        if dlist == ():
            print("您的账户或密码错误，请重新登陆")
            i += 1
            continue
        password = dlist[0]['pwd']
        
        if passW != password:
            print("您的账户或密码错误，请重新登陆")
            i += 1
            if i >= 3:

                print("登陆错误次数太多，已无权限登陆")
                return None

            else:
                continue

        elif password == passW:
            login_print()
            return (dlist[0])
            break





#程序主入口
if __name__ == '__main__':

    m = Model("accounts_info")

    acc_dic = login()
    print(acc_dic)


    while True:

        if acc_dic == None:
            break

        k = input("请输入你要进行的操作对应的数字：")

        if k == "1":  # 打印账户信息
            print("~" * 40)
            print("~" * 40)
            print("用户名：{}\n账户：{}\n账户余额：{}".format(
                acc_dic["accNam"], acc_dic["accNum"], acc_dic["balance"]))
            print("~" * 40)
            print("~" * 40)

            login_print() #循环显示操作界面

        elif k == "2":  # 存钱，并显示账户余额
            print("~" * 40)
            print("~" * 40)
            dep_num = int(input("请输入您的存钱金额："))
            acc_dic["balance"] += dep_num
            print("您的当前账户余额为：{}".format(acc_dic["balance"]))
            m.update({'accNum':acc_dic['accNum'],'balance':acc_dic['balance']})
            
            print("~" * 40)
            print("~" * 40)

            login_print()  # 循环显示操作界面

        elif k == "3":  # 取钱，判断账户余额是否充足，取后显示账户余额
            print("~" * 40)
            print("~" * 40)
            draw_num = int(input("请输入您的取钱金额:"))
            if acc_dic["balance"] < draw_num:
                print("账户余额不足，请重新输入")

            else:
                acc_dic["balance"] -= draw_num
                print("您的当前账户余额为：{}".format(acc_dic["balance"]))
                m.update({'accNum': acc_dic['accNum'], 'balance': acc_dic['balance']})
                
            print("~" * 40)
            print("~" * 40)

            login_print()  # 循环显示操作界面

        elif k == "4":
            print("您已退出当前账户")
            break
        else:
            print("输入错误，请重新输入一个数字")







